package fr.afcepf.atod21.formation.data;

import fr.afcepf.atod21.formation.entity.Stagiaire;
import fr.afcepf.atod21.formation.exception.Atod21Exception;

import java.util.List;

/**
 * Interface du Dao Stagiaire.
 */
public interface IDaoStagiaire {

    /**
     * Recherche des stagiaires par nom.
     *
     * @param nom {@link fr.afcepf.atod21.formation.entity.Stagiaire#nom}
     * @return liste de stagiaires
     */
    List<Stagiaire> rechercher(String nom);

    /**
     * Recherche des stagiaires par identifiant d'organisme.
     *
     * @param idOrganisme {@link fr.afcepf.atod21.formation.entity.Organisme#id}
     * @return liste de stagiaires
     */
    List<Stagiaire> rechercher(int idOrganisme);

    /**
     * Enregistrement d'un nouveau stagiaire.
     *
     * @param stagiaire Stagiaire à ajouter
     * @return Stagiaire une fois ajouté
     * @throws Atod21Exception si erreur pendant l'opération
     */
    Stagiaire ajouter(Stagiaire stagiaire) throws Atod21Exception;

    /**
     * Renvoi du stagiaire de son organisme de formation.
     *
     * @param stagiaire Stagiaire à renvoyer
     * @throws Atod21Exception si erreur pendant l'opération
     * @return
     * <code>
     *     <ul>
     *         <li>Le {@link Stagiaire} avec son
     *         {@link fr.afcepf.atod21.formation.entity.Organisme}
     *         null si ça marche</li>
     *         <li>Le {@link Stagiaire} avec son
     *         {@link fr.afcepf.atod21.formation.entity.Organisme}
     *         toujours affecté si ça ne marche pas</li>
     *     </ul>
     * </code>
     */
    Stagiaire renvoi(Stagiaire stagiaire) throws Atod21Exception;

}
